package leetcode.editor.vscdev;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

/**
 * 字母异位词分组
 * 
 */
public class lc49 {
    class Solution {
        public List<List<String>> groupAnagrams(String[] strs) {
            HashMap<String,List<String>> map = new HashMap<>();
            for (String s : strs) {
                char[] temp = s.toCharArray();
                Arrays.sort(temp);
                String sortedStr = new String(temp);
                if (map.containsKey(sortedStr)) {
                    // 如果已经包含该key,则新增元素进入list
                    List<String> list = map.get(sortedStr);
                    list.add(s);
                    map.put(sortedStr, list);
                } else {
                    // 否则,新增键值对entry进入map
                    List<String> newList = new ArrayList<>();
                    newList.add(s);
                    map.put(sortedStr, newList);
                }
                /* // 使用 computeIfAbsent 简化代码逻辑
                map.computeIfAbsent(sortedStr, k -> new ArrayList<>()).add(s); */
            }
            return new ArrayList<>(map.values());
        }
    }
}
